﻿using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
using SiGeCoPre.Presupuesto_BL;
using SiGeCoPre.Presupuesto_DTO;
using SiGeCoPre.Presupuesto_Factory;
using SiGeCoPre.Presupuesto_Util;
using SiGeCoPre.Presupuesto_ViewGeneral;

namespace SiGeCoPre.Presupuesto_ViewModificacion
{
    /// <summary>
    /// Formulario para modificar tareas de mantenimiento
    /// </summary>
    public partial class frmModificarMantenimiento : Form
    {
        static string tarea = "";
        static BLMantenimiento createMantenimiento = BLFactoryPresupuesto.createMantenimiento();
        static DataTable tareas = createMantenimiento.getAllMantenimiento(); 
        
        public frmModificarMantenimiento()
        {
            InitializeComponent();
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            frmTareas tareas = new frmTareas();
            tareas.FormClosed += new FormClosedEventHandler(tareas_FormClosed);
            tareas.Show();
        }

        private void tareas_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                if (null != frmTareas.pasarTareas())
                {
                    tarea = frmTareas.pasarTareas()[0];
                    mantenimientoDTO m = createMantenimiento.getMantenimiento(tarea);

                    if (null != m)
                    {
                        txtBusqueda.Text = m.NombreTarea;
                    }
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
             
        }

        private void btnAlta_Click(object sender, EventArgs e)
        {
            try
            {
                if (verificar())
                {
                    mantenimientoDTO m = new mantenimientoDTO();
                    m.NombreTarea = txtNombre.Text;
                    m.Descripcion = rtbDescripcion.Text;
                    m.Activo = true;
                    int idTarea = Convert.ToInt16(createMantenimiento.getAllMantenimiento().Select("nombre_tarea = '" + tarea + "'")[0]["id"].ToString());
                    Boolean modificado = createMantenimiento.updateMantenimiento(m, idTarea);

                    if (modificado)
                    {
                        MessageBox.Show("Tarea Modificada", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        this.Close();
                        this.Dispose();
                    }
                    else
                    {
                        MessageBox.Show("Error al intentar Modificar!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Texto.escribirLog("Error en modificarMantenimiento");
                    }
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
            }
        }

        private bool verificar()
        {
            bool verificado = false;
            bool nombreCorrecto = false;
            bool desCorrecta = false;

            if (!Validador.es_nombre(txtNombre))
            {
                errorProvider1.SetError(txtNombre, "Sólo Letras");
                txtNombre.BackColor = Color.Honeydew;
            }
            else
            {
                nombreCorrecto = true;
            }

            if (rtbDescripcion.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(rtbDescripcion, "No puede estar vacio");
                rtbDescripcion.BackColor = Color.Honeydew;
            }
            else
            {
                desCorrecta = true;
            }

            if (nombreCorrecto && desCorrecta)
            {
                verificado = true;
            }

            return verificado;

        }

        private void txtBusqueda_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (string.IsNullOrEmpty(txtBusqueda.Text.Trim()))
                {
                    txtNombre.Text = "";
                    rtbDescripcion.Text = "";
                    return;
                }

                if (null != tareas.Select("nombre_tarea = '" + txtBusqueda.Text + "'"))
                {
                    txtNombre.Text = tareas.Select("nombre_tarea = '" + txtBusqueda.Text + "'")[0]["nombre_tarea"].ToString();
                    rtbDescripcion.Text = tareas.Select("nombre_tarea = '" + txtBusqueda.Text + "'")[0]["descripcion"].ToString();
                }
                else
                {
                    txtNombre.Text = "";
                    rtbDescripcion.Text = "";
                }
            }
            catch (Exception ex)
            {
                Texto.escribirLog(ex.Message);
                return;
            }
        }
    }
}
